package com.example.movie.service.impl;

import com.example.movie.dao.TUserDao;
import com.example.movie.entity.TUser;
import com.example.movie.service.TUserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.UUID;

/**
 * (TUser表)服务实现类
 *
 * @author makejava
 * @since 2021-04-02 16:51:14
 */
@Service("tUserService")
public class TUserServiceImpl implements TUserService {
    @Resource
    private TUserDao tUserDao;

    /**
     * 通过ID查询单条数据
     *
     * @param userId 主键
     * @return 实例对象
     */
    @Override
    public TUser selectById(String userId) {
        return this.tUserDao.selectById(userId);
    }

    /**
     * 分页查询
     *
     * @param start 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    @Override
    public List<TUser> selectPage(int start, int limit) {
        return this.tUserDao.selectPage(start, limit);
    }

    /**
     * 查询所有
     *
     * @return 实例对象的集合
     */
    @Override
    public List<TUser> selectAll() {
        return this.tUserDao.selectAll();
    }

    /**
     * 根据条件查询
     *
     * @return 实例对象的集合
     */
    @Override
    public List<TUser> selectList(TUser tUser) {
        return this.tUserDao.selectList(tUser);
    }

    /**
     * 新增数据
     *
     * @param tUser 实例对象
     * @return 实例对象
     */
    @Override
    public int insert(TUser tUser) {
        if(tUser.getUserId() == null){
            tUser.setUserId(UUID.randomUUID().toString().replace("-",""));
        }
        return this.tUserDao.insert(tUser);
    }

    /**
     * 批量新增
     *
     * @param tUsers 实例对象的集合
     * @return 生效的条数
     */
    @Override
    public int batchInsert(List<TUser> tUsers) {
        return this.tUserDao.batchInsert(tUsers);
    }

    /**
     * 修改数据
     *
     * @param tUser 实例对象
     * @return 实例对象
     */
    @Override
    public TUser update(TUser tUser) {
        this.tUserDao.update(tUser);
        return this.selectById(tUser.getUserId());
    }

    /**
     * 通过主键删除数据
     *
     * @param userId 主键
     * @return 是否成功
     */
    @Override
    public int deleteById(String userId) {
        return this.tUserDao.deleteById(userId);
    }

    /**
     * 查询总数据数
     *
     * @return 数据总数
     */
    @Override
    public int count() {
        return this.tUserDao.count();
    }


    /**
     * 根据邮箱查询用户
     * @return 用户
     */
    @Override
    public TUser getUserByEmail(String email) {
        return this.tUserDao.getUserByEmail(email);
    }
}
